You try to run a program, but the system says it doesn't have enough memory
to run, but that can't be true because you've got 4M of RAM. Sound familiar? This is actually quite a common problem and really relates to the way your memory is arranged and being used rather than how much you actually have. This document is meant to shed some light on this often confusing problem, and give you some tips on how you can better make use of your memory.
Here's the scoop: your memory is actually divided into several different
sections, each of which has a very specific role.
The most important of these is the conventional memory. This is the only
memory immediately available to DOS programs, and all the memory DOS will
recognize without a memory manager. All the DOS programs you've ever used,
need to use this main memory. Above this block there are a variety of
memory areas: upper memory, expanded memory, and extended.
When DOS programs say they don't have enough memory to run, they're saying
there isn't enough conventional memory free for them to operate. Why isn't
it available is the next question. This happens because there are programs
that load when your machine starts up that take up part of your conventional
memory. These are known generically as memory resident programs. These
include drivers for special equipment like mouse, CD-ROM and sound drivers,
system enhancements like caches and compression programs, and other types
of system additions.
There are two files which control which of these programs are loaded and
run and they are called the CONFIG.SYS and the AUTOEXEC.BAT. If you'd like
to know how much memory you currently have free, you can type CHKDSK at the
DOS prompt and the last line of that report (BYTES FREE) will tell you how
much conventional memory you have available to run DOS programs.
How to get your program to run? Basically, what you need to do is free up
your conventional memory to make room for your program. You can do this in
two ways. The first is to not load any memory resident programs in the first
place. The second involves using a memory management system to load those
programs into the other sections of memory.
The easiest way to keep memory resident programs from interfering with your
program is to make a DOS SYSTEM disk which will start your system up, but
doesn't load any of your additional drivers. To do this, put a blank disk
in the A: drive (it needs to be blank because this operation will erase
anything on it!) and type the following:
FORMAT A: /S
Once it's done formatting, you can restart your machine with this disk in
the drive and it will bypass any memory resident programs and you'll be
able to run your program fine. While this is an excellent method to allow
certain programs to run, you need to be aware that it does this by keeping
drivers from loading, and what that really means for your system. Because
the mouse driver doesn't load, you won't be able to use your mouse in the
program.
If you're using Stacker or SuperStore, because their drivers aren't loaded,
you won't be able to access any compressed drives. To correct this situation,
you may need to create a minimum system that loads just enough of your
drivers to allow the system to run, but not so many that your memory is used
up. For more information about this, refer to your DOS manual for
Customizing Your System (chapt. 11 in the DOS 5.0 manual).
The other method to free more memory is to load some of your resident programs
into the other types of memory, out of your main 640K. In order to do this,
you must either have DOS 5.0 or another type of commercial memory manager and
at least 1M of RAM. You will also need a 386 system to use these program's
more advanced features. This procedure, and the restrictions and cautions
associated with it, is outlined in chapter 12 of the DOS 5.0 manual,
Optimizing Your System. It is highly recommended that you read this material
before making these changes.
If you have a commercial memory manager, simply follow the instructions
provided with that program. If you would like to use DOS 5.0's tools, the
basic memory management tool is HIMEM.SYS, and it is activated by having the
following lines in your CONFIG.SYS file:
DEVICE=C:\DOS\HIMEM.SYS
DOS=HIGH
The first line activates DOS's high memory manager, and the second loads DOS
itself into that section of memory. This alone may give you enough memory to
run your programs, again, you can check to see with the CHKDSK command. If
this still isn't enough, then you will have to use EMM386 to free up
additional memory. This will involve loading the EMM386 driver, then using
the DEVICEHIGH and LOADHIGH commands for your CONFIG.SYS and AUTOEXEC.BAT
files to load your individual drivers into high memory. This procedure,
while not terribly difficult, does involve quite a few steps, and you will
have to refer to your DOS manual in order to configure the files properly.
We hope this helps you in setting up your system to run your programs. If
you are still having problems, see if you can find the answers in the manuals
that accompanied your system. You can also contact Microsoft's technical
support for help on using their memory management tools (HIMEM.SYS & EMM386)
at (206)454-2030, or our technical support team for other problems related
to our programs at (602)893-8481. We want you to be able to enjoy our
programs, and thank you for your support of our company.